package com.cms.recursoshumanos.object.list;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import com.cms.recursoshumanos.object.Contacto;

public class ListaContacto implements Serializable
{
	/**
	 * 
	 */
	private static final long serialVersionUID = -5395517103795236552L;
	List<Contacto> listaContacto;
	
	public ListaContacto()
	{
		this.listaContacto = new ArrayList<Contacto>();
	}
	public Contacto getContactoByPersonaId(int id_personao)
	{
		Contacto elContacto = null;
		for (int i = 0; i < cantElementListaContacto() ; i++)
		{
			Contacto elAdiestrmaientoEncontrado = getContactoAtIndex(i);
			if (elAdiestrmaientoEncontrado.getEmpleado().getPersona().getPersonaId() == id_personao)
			{
				elContacto = elAdiestrmaientoEncontrado;
				break;
			}
		}
		return elContacto;
	} 
	public void deleteContacto(Contacto elContacto)
	{
		for (int i = 0 ; i < cantElementListaContacto() ; i++)
		{
			Contacto elContactoEnLista = getContactoAtIndex(i);
			if (elContactoEnLista.getEmpleado().getPersona().getPersonaId() == 
					elContacto.getEmpleado().getPersona().getPersonaId())
			{
				deleteContactoAtIndex(i);
				break;
			}
		}
	}
	public ListaContacto getListaFavorito()
	{
		ListaContacto regreso = new ListaContacto();
		for (int i = 0 ; i < cantElementListaContacto() ; i++)
		{
			Contacto aux_contacto = getContactoAtIndex(i);
			if (aux_contacto.getFavorito())
			{
				regreso.addContacto(aux_contacto);
			}
		}
		return regreso;
	}
	public int getIndexContacto(Contacto elContacto)
	{
		return this.listaContacto.indexOf(elContacto);
	}
	public int cantElementListaContacto()
	{
		return this.listaContacto.size();
	}
	public void actualizar_contacto_en_lista(Contacto elContacto)
	{
		for (int i = 0; i < cantElementListaContacto(); i++)
		{
			Contacto contacto_aux = getContactoAtIndex(i);
			if (contacto_aux.getEmpleado().getPersona().getPersonaId() == 
					elContacto.getEmpleado().getPersona().getPersonaId())
			{
				getContactoAtIndex(i).setEmpleado(elContacto.getEmpleado());
				break;
			}
		}
	}
	public void agregar_contacto_a_lista(Contacto elContacto)
	{
		if (getContactoByPersonaId(elContacto.getEmpleado().getPersona().getPersonaId()) == null)
		{
			addContacto(elContacto);
		}
		else
		{
			actualizar_contacto_en_lista(elContacto);
		}
	}
	public void addContacto(Contacto elContacto)
	{
		this.listaContacto.add(elContacto);	
	}
	public void setListaContacto(ArrayList<Contacto> listaContacto)
	{
		this.listaContacto = listaContacto;
	}
	public List<Contacto> getListaContacto()
	{
		return this.listaContacto;
	}
	public void resetListaContacto()
	{
		listaContacto.clear();
	}
	public void deleteContactoAtIndex(int index)
	{
		listaContacto.remove(index);
	}
	public Contacto getContactoAtIndex(int index)
	{
		return (Contacto) this.listaContacto.get(index);
	}
	
}


